/**
 * 员工基类：抽象类，定义所有员工的公共属性和抽象方法（体现多态基础）
 */
public abstract class Employee {
    // 公共属性：姓名、工号（符合文档1-54要求）
    protected String id;       // 工号
    protected String name;     // 姓名
    protected String month;    // 计算薪资的月份（用于工资条生成）

    // 构造方法：初始化公共属性
    public Employee(String id, String name, String month) {
        this.id = id;
        this.name = name;
        this.month = month;
    }

    // 抽象方法1：计算薪资（子类实现不同逻辑，体现多态）
    public abstract double calculateSalary() throws WorkHourException, NegativeSalaryException;

    // 抽象方法2：生成工资条（用String设计，符合文档1-58要求）
    public abstract String generateSalarySlip() throws WorkHourException, NegativeSalaryException;

    public String getName() {
        return name;
    }

    public String getMonth() {
        return month;
    }
}